package com.vvv.designpattern.ticket.builder;

/**
 * @author vvv
 * @date 2023-11-25 14 42
 * discription建造者模式：旨在将一个复杂的对象的构建与他的表示分离，使得同样的构建过程可以创建不同的表示
 * 建造者模式重在构建过程,而工厂模式重在创建对象的结果
 * TicketBuilder为抽象建造者，定义产品组建的抽象方法，
 * 说人话就是定义抽象的set方法，和返回创建对象的抽象方法
 */
public abstract class TicketBuilder<T> {
    // 设置通用发票内容
    public abstract void setCommonInfo(String title, String product, String content);

    public void setTaxId(String taxId) {
        throw new UnsupportedOperationException();
    }

    public void setBankInfo(String bankInfo) {
        throw new UnsupportedOperationException();
    }

    // 抽象建造方法
    public abstract T buildTicket();
}
